package com.leo.erp.service;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.leo.erp.dto.UserExecution;
import com.leo.erp.entity.User;
import com.leo.erp.util.GlobalRuntimeException;
import com.leo.erp.util.TreeNodeEx;

public interface UserService {
	List<User> getUserList(Wrapper<User> queryWrapper);
	
	/**
	 * 根据userId查询姓名信息
	 * @param userId
	 * @return
	 */
	UserExecution getUserById(int userId);
	
	/**
	 * 获取树列表
	 * @return
	 */
	List<TreeNodeEx> getOrganizationUserTree();
	
	/**
	 * 根据id获取用户信息
	 * @param UuserId
	 * @return
	 */
	UserExecution getUserNameById(int userId);
	
	/**
	 * 获取全部用户信息
	 * @return
	 */
	UserExecution getAllList();
	
	/**
	 * 分页获取数据
	 * @param userName
	 * @param loginName
	 * @param currentPage
	 * @param pageSize
	 * @return
	 */
	UserExecution getList(String userName, String loginName, int currentPage, int pageSize);
	
	/**
	 * 更新用户和关联关系表
	 * @param user
	 * @return
	 */
	UserExecution updateUserAndOrgUserRel(User user);
	
	/**
	 * 重置密码
	 * @param md5Pwd
	 * @param id
	 * @return
	 */
	UserExecution resetPwd(String md5Pwd, int id);
	
	/**
	 * 添加用户和用户关系表
	 * @param user
	 * @return
	 * @throws GlobalRuntimeException
	 */
	UserExecution addUserAndOrgUserRel(User user) throws GlobalRuntimeException;
	
	/**
	 * 查询用户总数
	 * @param userName
	 * @param loginName
	 * @return
	 */
	UserExecution countUser(String userName, String loginName);
	
	/**
	 * 根据id删除用户
	 * @param userId
	 * @return
	 */
	UserExecution deleteUser(int userId);
	
	/**
	 * 登陆验证帐号密码是否正确
	 * @param loginName
	 * @param password
	 * @return
	 */
	UserExecution validateUser(String loginName, String password);
	
	/**
	 * 根据loginName查询信息
	 * @param loginName
	 * @return
	 */
	UserExecution getUserByLoginName(String loginName);
	
	/**
	 * 检查用户名称和登录名不能重复 
	 * @param loginName
	 * @param password
	 * @return
	 */
	UserExecution checkUserNameAndLoginName(String userName, String loginName, String password);
	
	/**
	 * 注册
	 * @param user
	 * @param manageRoleId
	 * @param request
	 * @return
	 */
	UserExecution registerUser(User user, Integer manageRoleId, HttpServletRequest request) throws GlobalRuntimeException;
}
